import Vue from "vue";
import VueRouter from'vue-router';
//使用插件
Vue.use(VueRouter)

//获取原型对象上的push函数,相当于copy一份，为了解决路由跳转的报黄问题
const originalPush = VueRouter.prototype.push

//修改原型对象中的push方法
// VueRouter.prototype.push = function push(location) {
//    return originalPush.call(this, location).catch(err => err)
// }
//或用下面方法
//第一个参数告诉原来的push方法往哪里跳转，传递什么参数
//call和apply区别，相同点都可以调用函数一次，可以篡改函数上下文一次
//不同call传递参数用逗号，apply方法用数组
VueRouter.prototype.push = function push(location,resolve,reject) {
    if(resolve && reject){
        originalPush.call(this,location,resolve,reject)
    }else{
        originalPush.call(this,location,()=>{},()=>{})
    }
}
// const originalReplace = VueRouter.prototype.replace  //跟push方法一样

//引入路由组件
import Home from '@/pages/Home'
import Login from '@/pages/Login'
import Search from '@/pages/Search'
import Register from '@/pages/Register'
export default new VueRouter({
    routes:[
        {
            path:'/home',
            component:Home,
            meta:{show:true}
        },
        {
            path:'/login',
            component:Login,
            meta:{show:false}
        },
        {
            path:'/register',
            component:Register,
            meta:{
                show:false
            }
        },
        {
            path:'/search/:keyword?',
            name:"search",
            component:Search,
            meta:{
                show:true
            },
            //只有params参数可以,布尔值写法
            // props:true
            //对象写法,额外的给路由传递数据
            // props:{ a:1,b:2}
            //函数写法
            // props:($route)=>{
            //     return{keyword:$route.params.keyword,k:$route.query.k};
            // }
        },
        {
            path:'*',
            redirect:'/home'
        }
    ]
})